package com.huluobo.a2109kotlinshopping.login

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
import com.blankj.utilcode.util.SPUtils
import com.blankj.utilcode.util.ToastUtils
import com.huluobo.a2109kotlinshopping.MainActivity
import com.huluobo.a2109kotlinshopping.R
import com.huluobo.a2109kotlinshopping.base.BaseMVVMActivity
import com.huluobo.a2109kotlinshopping.databinding.ActivityLoginBinding
import com.huluobo.a2109kotlinshopping.db.DatabaseUtil
import com.huluobo.a2109kotlinshopping.db.Money
import com.huluobo.a2109kotlinshopping.net.Const
import com.huluobo.a2109kotlinshopping.register.RegisterActivity
import com.hyphenate.EMCallBack
import com.hyphenate.chat.EMClient

class LoginActivity : BaseMVVMActivity<ActivityLoginBinding>() {
    private lateinit var viewModel: LoginViewModel
    override fun initData() {
        viewModel = ViewModelProvider(this)[LoginViewModel::class.java]

        viewModel.loginSuccess.observe(this) {
            if (it.code == 200) {
//                //由于环信客户端会记录登录状态,所以需要先 退出一次环信登录,才能再次登录
//                EMClient.getInstance().logout(false)
//                EMClient.getInstance().login(it.data.username, it.data.password, object : EMCallBack {
//                    override fun onSuccess() {
//                        ToastUtils.showLong("欢迎回来:${it.data.username}")
//                        //保存用户token
//                        SPUtils.getInstance().put(Const.SP_TOKEN, it.data.token)
//                        //保存用户id,为了之后可以查询用
//                        SPUtils.getInstance().put(Const.SP_ID, it.data.id)
//
//                        //将用户信息保存到数据库
//                        DatabaseUtil.getDb().userInfoDao().insertUserInfo(it.data)
//                        DatabaseUtil.getDb().moneyDao().insertMoney(Money(it.data.id, 10000F))
//                        val intent = Intent(this@LoginActivity, MainActivity::class.java)
//                        startActivity(intent)
//                        finish()
//                    }
//
//                    override fun onError(code: Int, error: String?) {
//                        Log.i("TagA", "登陆环信错误:$error,$code")
//                    }
//
//                })
                ToastUtils.showLong("欢迎回来:${it.data.username}")
                //保存用户token
                SPUtils.getInstance().put(Const.SP_TOKEN, it.data.token)
                //保存用户id,为了之后可以查询用
                SPUtils.getInstance().put(Const.SP_ID, it.data.id)

                //将用户信息保存到数据库
                DatabaseUtil.getDb().userInfoDao().insertUserInfo(it.data)
                DatabaseUtil.getDb().moneyDao().insertMoney(Money(it.data.id, 10000F))
                val intent = Intent(this@LoginActivity, MainActivity::class.java)
                startActivity(intent)
                finish()

            } else {
                ToastUtils.showLong("登录失败:${it.message}")
            }
        }

        viewModel.loginFailed.observe(this) {
            Log.i("TagA", "登录失败:$it")
        }
    }

    override fun initView() {
        dataBinding.loginToLogin.setOnClickListener {
            viewModel.login(dataBinding.loginUsername.text.toString(), dataBinding.loginPassword.text.toString())
        }

        dataBinding.loginToRegister.setOnClickListener {
            val intent = Intent(this, RegisterActivity::class.java)
            startActivity(intent)
        }
    }

    override fun getLayoutId(): Int = R.layout.activity_login
}